﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CondorTravelOperacionesWeb.Source;
using System.Collections.Generic;
using condortravel.operaciones.core.DataModel;

using condortravel.operaciones.business.operaciones;
using condortravel.operaciones.common;
using condortravel.operaciones.core.Events;
using condortravel.operaciones.entities.Entities;
using condortravel.operaciones.common.Log;
using condortravel.operaciones.error.Operaciones;
using condortravel.operaciones.business.mantenimientoOperaciones;

namespace CondorTravelOperacionesWeb.Pages.Controles
{
    public partial class UCReporteOperaciones : System.Web.UI.UserControl
    {

        #region Business Objects
        private OperacionesServices operacionesServices;
   
   

        public OperacionesServices OperacionesServices
        {
            set { operacionesServices = value; }
        }


        private MantenimientoServices mantenimientoServices;

        public MantenimientoServices MantenimientoServices
        {

            set { mantenimientoServices = value; }
        }

        #endregion



        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                cargarDatosIniciales();
            }
            
        }

        private void cargarDatosIniciales()
        {

            Util.LoadDropDownList(cboAgencia, Estaticas.getListAgencia(), "descripcion", "Agencia_ID", true, "0", "-");
            Util.LoadDropDownList(cboCliente, mantenimientoServices.getListCliente(), "nombre", "cliente_ID", true, "0", "-");
            

            txtFechaInicio.Text = DateTime.Now.ToShortDateString();
            txtFechaTermino.Text = DateTime.Now.ToShortDateString();

        }


        private void generarVistaReporteOperaciones()
        {
            try
            {
                FilterItinerarioCriteria filter = obtenerCriterios();
                List<Tb_Evento> lista = operacionesServices.getReporteOperaciones(filter);
                gvList.DataSource = lista;
                gvList.DataBind();
                if (lista.Count == 0)
                    throw new OperacionesException.NoExisteItinerariosOPException();
            }
            catch (Exception exc1)
            {
                //this.ErrorControl(null, exc1);
                LogApp.WriteLog(ELogLevel.ERROR, string.Format("{0}-{1}", exc1.Message, exc1.StackTrace));
            }

        }

        private FilterItinerarioCriteria obtenerCriterios()
        {
            FilterItinerarioCriteria criterios = new FilterItinerarioCriteria();
            criterios.Agencia = (cboAgencia.SelectedIndex == 0 ? 0 : int.Parse(cboAgencia.SelectedValue));
            criterios.Estado = (cboEstadoItinerario.SelectedIndex == -1 ? 0 : int.Parse(cboEstadoItinerario.SelectedValue));
            criterios.FecFin = (txtFechaTermino.Text.Trim().Equals(String.Empty) ? DateTime.MinValue : DateTime.Parse(txtFechaTermino.Text));
            criterios.FecInicio = (txtFechaInicio.Text.Trim().Equals(String.Empty) ? DateTime.MinValue : DateTime.Parse(txtFechaInicio.Text));
            criterios.Itinerario = (txtCodigo.Text.Trim().Equals(String.Empty) ? 0 : int.Parse(txtCodigo.Text));
            criterios.Cliente = (cboCliente.SelectedIndex == 0 ? 0 : int.Parse(cboCliente.SelectedValue));
      
            return criterios;
        }

        protected void cmdBuscar_Click(object sender, EventArgs e)
        {
            generarVistaReporteOperaciones();
        }

        protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                Tb_Evento evento = (Tb_Evento)e.Row.DataItem;
                Label lblItinerario = (Label)e.Row.FindControl("lblItinerario");
                Label lblDetalle = (Label)e.Row.FindControl("lblDetalle");
                Label lblEstado = (Label)e.Row.FindControl("lblEstado");
                lblItinerario.Text = evento.Tb_ServiciosProgramado.Tb_ItinerarioViajero.itinerarioViajero_ID.ToString();
                lblDetalle.Text = evento.descripcion.ToString();
                lblEstado.Text = evento.Tb_Estado_Evento.descripcion.ToString();

            }
        }


    }
}